

#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "esp_timer.h"
#include "nvs_flash.h"
#include "lwip/err.h"
#include "lwip/sys.h"
#include "esp_http_server.h"
#include "esp_netif.h"
#include "lwip/sockets.h"
#include "lwip/netdb.h"
#include <inttypes.h>  // 用于PRId32等格式宏
#include "lwip/dns.h"
#include "esp_wifi.h" 
#include "public.h"
#include "esp_app_format.h" 
#include "esp_mac.h" // 添加头文件



static const char *TAG = "MAIN";



/* 修改后的app_main初始化逻辑 */
void app_main(void) {
    ESP_LOGI(TAG, "\n\n====== 系统启动 ======");
    Usart_Init();
    BeepGpioConfig();
    LedGpioConfig();
    // esp_err_t ret = nvs_flash_erase();
    // if (ret == ESP_OK) {
    //     nvs_flash_init(); // 重新初始化NVS
    // }
    
    // 初始化基础组件
    ESP_ERROR_CHECK(init_nvs());
    ESP_ERROR_CHECK(esp_netif_init());
    ESP_ERROR_CHECK(esp_event_loop_create_default());
    

    

    Wifi_Init();

    // 初始连接尝试
    if (load_config(&gs_wificonfig.g_config) == ESP_OK && is_valid_config(&gs_wificonfig.g_config)) {
        ESP_LOGI(TAG, "发现有效配置，尝试STA连接");
        // start_sta_mode();
    } else {
        ESP_LOGI(TAG, "进入初始配网模式");
        // start_provisioning(PROV_TIMEOUT_FIRST);
    }
    start_provisioning(PROV_TIMEOUT_FIRST);

}